Revert "bpf: one perf event close won't free bpf program attached ..."
authorBen Hutchings <ben@decadent.org.uk>
Thu, 26 Oct 2017 20:38:57 +0000 (22:38 +0200)
committerYves-Alexis Perez <corsac@debian.org>
Thu, 4 Jan 2018 11:12:40 +0000 (11:12 +0000)
This reverts commit dcc738d393156dd29ed961ecefe13d96ed5f782f, which was
commit ec9dd352d591f0c90402ec67a317c1ed4fb2e638 upstream.  It introduces
an ABI break that's not easily avoidable.  The bug it fixes doesn't seem
to have any security impact.

Gbp-Pq: Topic debian
Gbp-Pq: Name revert-bpf-one-perf-event-close-won-t-free-bpf-program-atta.patch

include/linux/trace_events.h
kernel/events/core.c

index ba57266d9e801b52d1f7e99ee53b52d571637e78..be007610ceb08aaa7cad1073effe73b24adff66d 100644 (file)
@@ -273,7 +273,6 @@ struct trace_event_call {
        int                             perf_refcount;
        struct hlist_head __percpu      *perf_events;
        struct bpf_prog                 *prog;
-       struct perf_event               *bpf_prog_owner;
 
        int     (*perf_perm)(struct trace_event_call *,
                             struct perf_event *);
index 60a8da7cdffffe127a819afa5d7c49205597a4d8..2ecb8891b5a91a39c11cadcc1b6bb19393808c9a 100644 (file)
@@ -7876,7 +7876,6 @@ static int perf_event_set_bpf_prog(struct perf_event *event, u32 prog_fd)
                }
        }
        event->tp_event->prog = prog;
-       event->tp_event->bpf_prog_owner = event;
 
        return 0;
 }
@@ -7891,7 +7890,7 @@ static void perf_event_free_bpf_prog(struct perf_event *event)
                return;
 
        prog = event->tp_event->prog;
-       if (prog && event->tp_event->bpf_prog_owner == event) {
+       if (prog) {
                event->tp_event->prog = NULL;
                bpf_prog_put(prog);
        }